package de.tum.in.elitese.wahlsys.persister.persistence_objects;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;

import de.tum.in.elitese.wahlsys.persister.PersistenceObject;

/**
 * see Table PERSON
 * 
 * @author Christoph Frenzel
 * 
 */
public class Person extends PersistenceObject {
	private static final List<String> FIELD_NAMES = Collections.unmodifiableList(Arrays.asList(new String[] { "PERSONALAUSWEISNUMMER", "ORT", "GEBURTSORT", "STRASSEHAUSNUMMER", "VORNAME", "NAME",
			"GEBURTSDATUM", "POSTLEITZAHL", "WAHLBEZIRK", "WAHLKREIS", "BUNDESLAND" }));

	private static final String TABLE_NAME = "PERSON";

	private Date fGeburtsdatum;

	private String fGeburtsort;

	private String fName;

	private String fOrt;

	private Integer fPersonalausweisnummer;

	private Integer fPostleitzahl;

	private String fStrasseHausnummer;

	private String fVorname;

	private Wahlbezirk fWahlbezirk;

	public Date getGeburtsdatum() {
		return fGeburtsdatum;
	}

	public String getGeburtsort() {
		return fGeburtsort;
	}

	public String getName() {
		return fName;
	}

	public String getOrt() {
		return fOrt;
	}

	@Override
	public List<String> getPersistanceStrings() {
		List<Object> values = new ArrayList<Object>(12);
		values.add(getPersonalausweisnummer());
		values.add(getOrt());
		values.add(getGeburtsort());
		values.add(getStrasseHausnummer());
		values.add(getVorname());
		values.add(getName());
		values.add(getGeburtsdatum());
		values.add(getPostleitzahl());

		if (getWahlbezirk() != null) {
			values.add(getWahlbezirk().getName());
			values.add(getWahlbezirk().getWahlkreis().getNummer());
			values.add(getWahlbezirk().getWahlkreis().getBundesland().getName());
		} else {
			values.add(null);
			values.add(null);
			values.add(null);
		}

		List<String> result = new ArrayList<String>(1);
		result.add(createInsertString(TABLE_NAME, FIELD_NAMES, Collections.unmodifiableList(values)));
		return result;
	}

	public Integer getPersonalausweisnummer() {
		return fPersonalausweisnummer;
	}

	public Integer getPostleitzahl() {
		return fPostleitzahl;
	}

	public String getStrasseHausnummer() {
		return fStrasseHausnummer;
	}

	public String getVorname() {
		return fVorname;
	}

	public Wahlbezirk getWahlbezirk() {
		return fWahlbezirk;
	}

	public void setGeburtsdatum(Date geburtsdatum) {
		fGeburtsdatum = geburtsdatum;
	}

	public void setGeburtsort(String geburtsort) {
		fGeburtsort = geburtsort;
	}

	public void setName(String name) {
		fName = name;
	}

	public void setOrt(String ort) {
		fOrt = ort;
	}

	public void setPersonalausweisnummer(Integer personalausweisnummer) {
		fPersonalausweisnummer = personalausweisnummer;
	}

	public void setPostleitzahl(Integer postleitzahl) {
		fPostleitzahl = postleitzahl;
	}

	public void setStrasseHausnummer(String strasseHausnummer) {
		fStrasseHausnummer = strasseHausnummer;
	}

	public void setVorname(String vorname) {
		fVorname = vorname;
	}

	public void setWahlbezirk(Wahlbezirk wahlbezirk) {
		fWahlbezirk = wahlbezirk;
	}

}
